package com.blog.common.core.utils;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.Objects;

/**
 * <p>
 * 分页工具类
 * </p>
 *
 * @author Valerie
 * @date 2023/2/18
 **/
@SuppressWarnings("all")
public class PageUtils {

    /** PAGE_HOLDER 保存分页信息*/
    private static final ThreadLocal<Page<?>> PAGE_HOLDER = new ThreadLocal<>();

    /**
     * 向当前线程设置分页息
     * @param page  分页信息
     */
    public static void setCurrentPage(Page<?> page){
        PAGE_HOLDER.set(page);
    }

    /**
     * 获取分页数据
     * @return Page分页信息
     */
    public static Page getPage(){
        Page page = PAGE_HOLDER.get();
        if (Objects.isNull(page)){
            setCurrentPage(new Page<>());
        }
        return PAGE_HOLDER.get();
    }

    /**
     * 获取页码
     * @return Long   页码
     */
    public static Long getPageNum(){
        return getPage().getCurrent();
    }

    /**
     * 获取每页条数
     * @return Long   每页条数
     */
    public static Long getPageSize(){
        return getPage().getSize();
    }

    /**
     * 获取当前页之前的数据总数
     * @return Long   数据量
     */
    public static Long getLimitPageSize(){
        return (getPage().getCurrent() - 1) * getPageSize();
    }

    /**
     * remove
     */
    public static void remove(){
        PAGE_HOLDER.remove();
    }
}
